package org.agilelang.fgl.parser;

/*
 AgileLang - A fourth generation language(http://www.agilelang.org).

 Copyright (C) 2013 Roderick Cusirramos (roderick20@hotmail.com)

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

import org.agilelang.object.Application;

public class ApplicationProcess extends Process {

    private Application application;
    private Class cls = null;

    public ApplicationProcess() {
        application = new Application();
        try {
            cls = Class.forName("org.agilelang.object.Application");
        } catch (ClassNotFoundException ex) {
            error = "Error " + ex.toString();
        }
    }

    public boolean process(String aLine) {
        Function function = Util.getFunctionApp(aLine);

        if (function.name.equals("config.define")) {
            String[] param = Util.split(function.val, ",");
            for (int i = 0; i < param.length; i++) {
                String[] paramdel = Util.split(param[i], "=");
                String name = paramdel[0];
                String value = paramdel[1].substring(1, paramdel[1].length() - 1);
                if (!Util.setField(cls, name, application, value)) {
                    error = "Error parametro de la funcion \"define\" no existe : " + name;
                    return false;
                }
            }
        } else if (function.name.equals("db.define")) {
            String[] param = Util.split(function.val, ",");
            for (int i = 0; i < param.length; i++) {
                String[] paramdel = Util.split(param[i], "=");
                String name = paramdel[0];
                String value = paramdel[1].substring(1, paramdel[1].length() - 1);
                if (!Util.setField(cls, name, application, value)) {
                    error = "Error parametro de la funcion \"define\" no existe : " + name;
                    return false;
                }
            }
        }
        return false;
    }

    public Application getApplication() {
        return application;
    }
}
